package cn.dengta.webapp.push.service;

import javax.annotation.Nullable;

import cn.dengta.common.model.Messager;
import cn.dengta.webapp.push.dto.*;
import cn.dengta.webapp.trade.entity.GiftLog;

/**
 * 推送服务
 */
public interface RemotePushService {

	/**
	 * 推送【电视墙】信息
	 */
	Messager<String> toTvWall(GiftLog giftLog);

	/**
	 * 推送【飘屏】信息
	 */
	Messager<String> toEventNotify(GiftLog giftLog);

	/**
	 * 推送【VIP飘屏】信息
	 */
	default Messager<String> toVipEventNotify(UserDTO user, Long logId) {
		return toVipEventNotify(user, logId, null);
	}

	/**
	 * 推送【个人VIP/群VIP 飘屏】信息
	 *
	 * @param groupVipName 如果该参数不为空，则表示【群VIP】
	 */
	Messager<String> toVipEventNotify(UserDTO user, Long logId, @Nullable String groupVipName);

	/**
	 * 推送【喜欢我】（实际还包括 访客人次）的未读计数信息
	 */
	boolean toLikeMeCounter(Long userId, LikeMeUnreadDTO dto);

	/**
	 * 推送【动态操作】的未读计数信息（目前存在计数 > 0就不推送）
	 */
	boolean toMomentCounter(Long userId, MomentUnreadDTO dto);

	/**
	 * 用户日常任务完成推送
	 */
	boolean toDailyTask(Long userId, DailyTaskDTO dto);

	/**
	 * 用户签到任务完成推送
	 */
	boolean toSignTask(Long userId, SignTaskDTO dto);

}
